package com.rc.web.service.impl;

import com.mybatisflex.core.row.Row;
import com.mybatisflex.core.row.RowUtil;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.rc.pojo.po.Maintenance;
import com.rc.pojo.vo.maintenance.MaintenanceListVO;
import com.rc.web.mapper.MaintenanceMapper;
import com.rc.web.service.MaintenanceService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Comparator;
import java.util.List;

/**
 * 养护服务实现类
 * 提供植物养护相关的业务逻辑实现
 */
@Service
@RequiredArgsConstructor
public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maintenance> implements MaintenanceService {

    /**
     * 获取最近四次养护的图片
     * @param plantItemId 植物项ID
     * @return 最近四次养护的图片URL列表
     */
    @Override
    public List<String> lastFourMaintenanceImgs(Long plantItemId) {
        // 根据植物项ID查询最近四次养护记录
        List<Maintenance> maintenances = mapper.selectLastFourByPlantItemId(plantItemId);

        // 提取养护图片URL并返回
        return maintenances.stream()
                .map(Maintenance::getImg)
                .toList();
    }

    /**
     * 获取养护列表
     * @param plantItemId 植物项ID
     * @return 养护列表VO，按创建时间倒序排列
     */
    @Override
    public List<MaintenanceListVO> getList(Long plantItemId) {
        // 根据植物项ID查询已完成养护记录
        List<Row> rows = mapper.selectFinishByPlantItemId(plantItemId);

        // 将Row转换为VO对象
        List<MaintenanceListVO> objectList = RowUtil.toObjectList(rows, MaintenanceListVO.class);
        
        // 按创建时间倒序排列并返回
        return objectList.stream()
                .sorted(Comparator.comparing(MaintenanceListVO::getCreateTime).reversed())
                .toList();
    }
}
